package com.my.launcher.config;

import cn.hutool.core.util.StrUtil;
import com.google.auto.service.AutoService;
import com.my.launcher.constant.NacosConstant;
import com.my.launcher.utils.PropsUtil;
import org.springframework.boot.builder.SpringApplicationBuilder;

import java.util.Properties;

/**
 * 启动参数拓展
 *
 * @author smallchil
 */
@AutoService(LauncherService.class)
public class LauncherServiceImpl implements LauncherService {

    @Override
    public void launcher(SpringApplicationBuilder builder, String appName,
                         Properties propsRead,
                         boolean isLocalDev) {
        Properties props = System.getProperties();
        String active  = propsRead.getProperty("spring.profiles.active");
        PropsUtil.setProperty(props, "spring.cloud.nacos.config.ext-config[0].data-id", NacosConstant.dataId(appName, active));
        PropsUtil.setProperty(props, "spring.cloud.nacos.config.ext-config[0].group", NacosConstant.NACOS_CONFIG_GROUP);
        PropsUtil.setProperty(props, "spring.cloud.nacos.config.ext-config[0].refresh", NacosConstant.NACOS_CONFIG_REFRESH);
        // 通用注册
        String nacosAddr = propsRead.getProperty("nacosAddr");
        if(StrUtil.isNotBlank(nacosAddr)){
            PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", nacosAddr);
            PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", nacosAddr);
        }
        String sentinelAddr = propsRead.getProperty("sentinelAddr");
        if(StrUtil.isNotBlank(sentinelAddr)){
            PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", sentinelAddr);
        }
//        PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile));
        //#暴露所有端点
        PropsUtil.setProperty(props, "management.endpoints.web.exposure.include", "*");

        // 开启elk日志
        // PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile));

        // seata注册地址
        // PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile));
        // seata注册group格式
        // PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName));
        // seata配置服务group
        // PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE);
        // seata注册模式配置
        // PropsUtil.setProperty(props, "seata.registry.type", LauncherConstant.NACOS_MODE);
        // PropsUtil.setProperty(props, "seata.registry.nacos.server-addr", LauncherConstant.nacosAddr(profile));
        // PropsUtil.setProperty(props, "seata.config.type", LauncherConstant.NACOS_MODE);
        // PropsUtil.setProperty(props, "seata.config.nacos.server-addr", LauncherConstant.nacosAddr(profile));
    }

}
